#include <typescommon.h>
#include <charQueue.h>
#include <genrand.h>

/*
队列：先进先出。
|进口|
|5|
|4|
|3|
|2|
|1|
|0|队列
|出口|
*/


// 这里做一个char型的队列。
// 这里考虑到单片机应用的队列
// 有写入覆盖问题。一个线程写一个线程读不会有问题。2个线程写会有问题，2个线程读也有问题。


#define QUEUE_CHECK_SIZE 100
int main(int argc, char **argv)
{
    srand(time(NULL));//产生随机数需要使用srand初始化，不然每次运行都一样的随机数。
    struct queArrayStruct tmpqueue = {};
    static uint8_t queueDatabuf[QUEUE_CHECK_SIZE];
    int tmpflag = 0;
    char tmpinput[12] = {0};
    char tmpread[5] = {0};
    //将全局字符串用来做队列的缓存区。
    queArrayInit(&tmpqueue, queueDatabuf, sizeof(queueDatabuf));

    for(int i = 0; i < 10; i++)
    {
        grdStrNorm(tmpinput, sizeof(tmpinput) - 1);
        logdebug("input:%s", tmpinput);
        queArrayInput(&tmpqueue, (uint8_t *)tmpinput, sizeof(tmpinput) - 1);
        logdebug("%d", queArraySize(&tmpqueue));
        tmpflag = queArrayOutput(&tmpqueue, (uint8_t *)tmpread, sizeof(tmpread) - 1);
        if(tmpflag > 0)
        {
            logdebug("read:%s", tmpread);
        }
    }

    logdebug("pop leave data--------------------->%d", queArraySize(&tmpqueue));

    while(tmpflag = queArrayOutput(&tmpqueue, (uint8_t *)tmpread, sizeof(tmpread) - 1), tmpread[tmpflag] = '\0', tmpflag > 0)
    {
        logdebug("read = %s", tmpread);
    }

    return 1;
}


